package org.jeecg.modules.asset.entity;

import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.common.aspect.annotation.ChangeLog;
import org.jeecg.modules.asset.vo.EquipmentAssetVO;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecg.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * @Description: 资产台账
 * @Author: jeecg-boot
 * @Date:   2025-11-14
 * @Version: V1.0
 */
@Data
@TableName("asset_message")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="asset_message对象", description="资产台账")
public class AssetMessage implements Serializable {
    private static final long serialVersionUID = 1L;

	/**主键ID（建议UUID）*/
	@TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键ID（建议UUID）")
    private java.lang.String id;
	/**创建人*/
    @ApiModelProperty(value = "创建人")
    private java.lang.String createBy;
	/**创建日期（默认当前时间）*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "创建日期（默认当前时间）")
    private java.util.Date createTime;
	/**更新人*/
    @ApiModelProperty(value = "更新人")
    private java.lang.String updateBy;
	/**更新日期（自动更新）*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "更新日期（自动更新）")
    private java.util.Date updateTime;
	/**删除标记（0-未删，1-已删）*/
//	@Excel(name = "删除标记（0-未删，1-已删）", width = 15)
    @ApiModelProperty(value = "删除标记（0-未删，1-已删）")
    @TableLogic
    private java.lang.String delFlag;
	/**资产编码*/
	@Excel(name = "资产编码", width = 15)
    @ApiModelProperty(value = "资产编码")
    private java.lang.String assetCode;
	/**资产名称*/
	@Excel(name = "资产名称", width = 15)
    @ApiModelProperty(value = "资产名称")
	@ChangeLog("资产名称")
    private java.lang.String assetName;
	/**资产类型*/
	@Excel(name = "资产类型", width = 15, dicCode = "asset_all_code")
	@Dict(dicCode = "asset_all_code")
	@ChangeLog("资产类型")
	@ApiModelProperty(value = "资产类型")
	private java.lang.String assetType;
	/**空间类型（大分类，如：商业经营用房、行政办公用房、生活配套用房）*/
	@Excel(name = "空间类型", width = 15, dicCode = "space_type")
	@Dict(dicCode = "space_type")
	@ChangeLog("空间类型")
    @ApiModelProperty(value = "空间类型（大分类，如：商业经营用房、行政办公用房、生活配套用房）")
    private java.lang.String spaceType;
	/**空间子类（二级分类，如：商务、教育、医疗、公寓、公建）*/
	@Excel(name = "空间子类", width = 15, dicCode = "space_subtype")
	@Dict(dicCode = "space_subtype")
    @ApiModelProperty(value = "空间子类（二级分类，如：商务、教育、医疗、公寓、公建）")
	@ChangeLog("空间子类")
    private java.lang.String spaceSubtype;
	/**设备分类（大分类，如：暖通空调、电梯系统、消防系统）*/
	@Excel(name = "设备分类", width = 15, dicCode = "asset_equip_type")
	@Dict(dicCode = "asset_equip_type")
	@ChangeLog("设备分类")
    @ApiModelProperty(value = "设备分类（大分类，如：暖通空调、电梯系统、消防系统）")
    private java.lang.String equipmentCategory;
	/**所属空间（关联space_asset表的space_code，实现设备-空间归属）*/
	@Excel(name = "所属空间", width = 15, dictTable = "asset_message", dicText = "asset_name", dicCode = "id")
	@Dict(dictTable = "asset_message", dicText = "asset_name", dicCode = "id")
    @ApiModelProperty(value = "所属空间（关联space_asset表的space_code，实现设备-空间归属）")
	@ChangeLog("所属空间")
    private java.lang.String belongSpaceCode;
	/**详细地址 / 存放位置*/
	@Excel(name = "详细地址（地理位置描述，如：XX市XX区XX路XX号）", width = 15)
    @ApiModelProperty(value = "详细地址（地理位置描述，如：XX市XX区XX路XX号）")
	@ChangeLog("详细地址 / 存放位置")
    private java.lang.String place;
	/**资产状态（如：自用、出租、闲置、待租、装修中、已停用）*/
	@Excel(name = "资产状态", width = 15, dicCode = "all_asset_status")
	@Dict(dicCode = "all_asset_status")
    @ApiModelProperty(value = "资产状态（如：自用、出租、闲置、待租、装修中、已停用）")
	@ChangeLog("资产状态")
    private java.lang.String status;
	/**负责人*/
	@Excel(name = "负责人", width = 15)
    @ApiModelProperty(value = "负责人")
	@ChangeLog("负责人")
    private java.lang.String chargePerson;
	/**联系电话*/
	@Excel(name = "联系电话", width = 15)
    @ApiModelProperty(value = "负责人联系电话")
	@ChangeLog("联系电话")
    private java.lang.String chargeMobile;
	/**实物图片（存储图片URL或附件ID，多个用逗号分隔）*/
	@Excel(name = "实物图片", width = 15)
    @ApiModelProperty(value = "实物图片（存储图片URL或附件ID，多个用逗号分隔）")
	@ChangeLog("实物图片")
    private java.lang.String physicalImage;
	/**建筑面积（单位：㎡，保留2位小数）*/
	@Excel(name = "建筑面积（㎡）", width = 15)
    @ApiModelProperty(value = "建筑面积（单位：㎡，保留2位小数）")
	@ChangeLog("建筑面积")
    private java.math.BigDecimal buildingArea;
	/**月折旧额（元）*/
	@Excel(name = "月折旧额（元）", width = 15)
    @ApiModelProperty(value = "月折旧额（元）")
	@ChangeLog("月折旧额")
    private java.math.BigDecimal monthDepreciationFee;
	/**可租面积（单位：㎡，保留2位小数）*/
	@Excel(name = "可租面积（㎡）", width = 15)
    @ApiModelProperty(value = "可租面积（单位：㎡，保留2位小数）")
	@ChangeLog("可租面积")
    private java.math.BigDecimal rentableArea;
	/**楼层信息（如：地上19层，地下1层）*/
	@Excel(name = "楼层信息（如：地上19层，地下1层）", width = 15)
    @ApiModelProperty(value = "楼层信息（如：地上19层，地下1层）")
	@ChangeLog("楼层信息")
    private java.lang.String floorInfo;
	/**建成日期（建筑物建成日期）*/
	@Excel(name = "建成日期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "建成日期（建筑物建成日期）")
	@ChangeLog("建成日期")
    private java.util.Date completionYear;
	/**停车位数量（配套总数，非负整数）*/
	@Excel(name = "停车位数量", width = 15)
    @ApiModelProperty(value = "停车位数量（配套总数，非负整数）")
	@ChangeLog("停车位数量")
    private java.lang.Integer parkingNum;
	/**电梯数量（如：客梯6部，货梯1部）*/
	@Excel(name = "电梯数量", width = 15)
    @ApiModelProperty(value = "电梯数量（如：客梯6部，货梯1部）")
	@ChangeLog("电梯数量")
    private java.lang.String elevatorNum;
	/**配套设施（周边/内部设施描述，如：自带商超、24h安保）*/
	@Excel(name = "配套设施", width = 15)
    @ApiModelProperty(value = "配套设施（周边/内部设施描述，如：自带商超、24h安保）")
	@ChangeLog("配套设施")
    private java.lang.String supportFacility;
	/**品牌（如：奥的斯(OTIS)、格力）*/
	@Excel(name = "品牌", width = 15)
    @ApiModelProperty(value = "品牌（如：奥的斯(OTIS)、格力）")
	@ChangeLog("品牌")
    private java.lang.String brand;
	/**规格型号（设备具体型号）*/
	@Excel(name = "规格型号", width = 15)
    @ApiModelProperty(value = "规格型号（设备具体型号）")
	@ChangeLog("规格型号")
    private java.lang.String model;
	/**技术参数*/
	@Excel(name = "技术参数", width = 15)
    @ApiModelProperty(value = "技术参数")
	@ChangeLog("技术参数")
    private java.lang.String technicalParams;
	/**制造商（生产厂家名称）*/
	@Excel(name = "制造商", width = 15)
    @ApiModelProperty(value = "制造商（生产厂家名称）")
	@ChangeLog("制造商")
    private java.lang.String manufacturer;
	/**出厂编号（设备序列号S/N）*/
	@Excel(name = "出厂编号", width = 15)
    @ApiModelProperty(value = "出厂编号（设备序列号S/N）")
	@ChangeLog("出厂编号")
    private java.lang.String factorySerial;
	/**出厂日期（设备生产日期）*/
	@Excel(name = "出厂日期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "出厂日期（设备生产日期）")
	@ChangeLog("出厂日期")
    private java.util.Date factoryDate;
	/**权属主体（资产所有权归属方，如：XX公司、XX单位）*/
	@Excel(name = "权属主体", width = 15)
    @ApiModelProperty(value = "权属主体（资产所有权归属方，如：XX公司、XX单位）")
	@ChangeLog("权属主体")
    private java.lang.String ownershipSubject;
	/**取得方式（如：自建、购置、划拨）*/
	@Excel(name = "取得方式", width = 15, dicCode = "acquisition_method")
	@Dict(dicCode = "acquisition_method")
    @ApiModelProperty(value = "取得方式（如：自建、购置、划拨）")
	@ChangeLog("取得方式")
    private java.lang.String acquisitionMethod;
	/**账面原值（原始成本，单位：元，保留2位小数）*/
	@Excel(name = "账面原值（元）", width = 15)
    @ApiModelProperty(value = "账面原值（原始成本，单位：元，保留2位小数）")
	@ChangeLog("账面原值")
    private java.math.BigDecimal bookOriginalValue;
	/**账面净值（当前财务净值，单位：元，保留2位小数）*/
	@Excel(name = "账面净值（元）", width = 15)
    @ApiModelProperty(value = "账面净值（当前财务净值，单位：元，保留2位小数）")
	@ChangeLog("账面净值")
    private java.math.BigDecimal bookNetValue;
	/**折旧起始年月*/
	@Excel(name = "折旧起始年月", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "折旧起始年月")
	@ChangeLog("折旧起始年月")
    private java.util.Date depreciationStartDate;
	/**权证办理状态（如：已办理、办理中、未办理）*/
	@Excel(name = "权证办理状态", width = 15, dicCode = "certificate_status")
	@Dict(dicCode = "certificate_status")
    @ApiModelProperty(value = "权证办理状态（如：已办理、办理中、未办理）")
	@ChangeLog("权证办理状态")
    private java.lang.String certificateStatus;
	/**资产类型*/
	@Excel(name = "资产类型", width = 15, dicCode = "asset_type_space")
	@Dict(dicCode = "asset_type_space")
    @ApiModelProperty(value = "资产类型")
	@ChangeLog("资产类型")
    private java.lang.Integer isFixedAsset;
	/**供应商（设备提供方）*/
	@Excel(name = "供应商", width = 15)
    @ApiModelProperty(value = "供应商（设备提供方）")
	@ChangeLog("供应商")
    private java.lang.String supplier;
	/**采购日期（购买日期）*/
	@Excel(name = "采购日期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "采购日期（购买日期）")
	@ChangeLog("采购日期")
    private java.util.Date purchaseDate;
	/**合同编号（采购合同编号）*/
	@Excel(name = "合同编号（采购合同编号）", width = 15)
    @ApiModelProperty(value = "合同编号（采购合同编号）")
	@ChangeLog("合同编号")
    private java.lang.String contractCode;
	/**保修截止日期（保修失效日期）*/
	@Excel(name = "保修截止日期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "保修截止日期（保修失效日期）")
	@ChangeLog("保修截止日期")
    private java.util.Date warrantyEndDate;
	/**经营单位（实际经营/使用单位）*/
	@Excel(name = "经营单位", width = 15)
    @ApiModelProperty(value = "经营单位（实际经营/使用单位）")
	@ChangeLog("经营单位")
    private java.lang.String operationUnit;
	/**可否对外招租（1-否，2-是）*/
	@Excel(name = "可否对外招租", width = 15, dicCode = "is_fixed_asset")
	@Dict(dicCode = "is_fixed_asset")
    @ApiModelProperty(value = "可否对外招租（1-否，2-是）")
	@ChangeLog("可否对外招租")
    private java.lang.Integer canRent;
	/**已租面积（当前已签约面积，单位：㎡）*/
	@Excel(name = "已租面积（㎡）", width = 15)
    @ApiModelProperty(value = "已租面积（当前已签约面积，单位：㎡）")
	@ChangeLog("已租面积")
    private java.math.BigDecimal rentedArea;
	/**参考租金（单价，单位：元/㎡/月）*/
	@Excel(name = "参考租金（元/㎡/月）", width = 15)
    @ApiModelProperty(value = "参考租金（单价，单位：元/㎡/月）")
	@ChangeLog("参考租金")
    private java.math.BigDecimal referenceRent;
	/**年度收入（租金或其他收入总额，单位：元）*/
	@Excel(name = "年度收入（元）", width = 15)
    @ApiModelProperty(value = "年度收入（租金或其他收入总额，单位：元）")
	@ChangeLog("年度收入")
    private java.math.BigDecimal annualIncome;
	/**维修状态（如：正常、待维修、维修中、故障）*/
	@Excel(name = "维修状态", width = 15, dicCode = "maintenance_status")
	@Dict(dicCode = "maintenance_status")
    @ApiModelProperty(value = "维修状态（如：正常、待维修、维修中、故障）")
	@ChangeLog("维修状态")
    private java.lang.String maintenanceStatus;
	/**维修服务商（提供维修的公司/个人）*/
	@Excel(name = "维修服务商", width = 15)
    @ApiModelProperty(value = "维修服务商（提供维修的公司/个人）")
	@ChangeLog("维修服务商")
    private java.lang.String maintenanceCompany;
	/**上次维修日期（最近一次维修时间）*/
	@Excel(name = "上次维修日期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "上次维修日期（最近一次维修时间）")
	@ChangeLog("上次维修日期")
    private java.util.Date lastMaintenanceDate;
	/**检验日期*/
	@Excel(name = "检验日期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "检验日期")
	@ChangeLog("检验日期")
    private java.util.Date inspectDate;
	/**下次维修日期（计划维修时间）*/
	@Excel(name = "下次维修日期", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "下次维修日期（计划维修时间）")
	@ChangeLog("下次维修日期")
    private java.util.Date nextMaintenanceDate;
	/**管理单位（物业服务公司名称）*/
	@Excel(name = "管理单位", width = 15)
    @ApiModelProperty(value = "管理单位（物业服务公司名称）")
	@ChangeLog("管理单位")
    private java.lang.String propertyCompany;
	/**年物业费（年度总费用，单位：元）*/
	@Excel(name = "年物业费(元）", width = 15)
    @ApiModelProperty(value = "年物业费（年度总费用，单位：元）")
	@ChangeLog("年物业费")
    private java.math.BigDecimal annualPropertyFee;
	/**空房管理费（空置状态下费用，单位：元）*/
	@Excel(name = "空房管理费（元）", width = 15)
    @ApiModelProperty(value = "空房管理费（空置状态下费用，单位：元）")
	@ChangeLog("空房管理费")
    private java.math.BigDecimal vacantManagementFee;
	/**备注（补充说明信息）*/
	@Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注（补充说明信息）")
	@ChangeLog("备注")
    private java.lang.String remark;
	/**资产类型*/
	@Excel(name = "资产类型", width = 15, dicCode = "asset_type")
	@Dict(dicCode = "asset_type")
    @ApiModelProperty(value = "资产类型")
	@ChangeLog("资产类型")
    private java.lang.String type;

	/**不动产权力人*/
	@Excel(name = "不动产权力人", width = 15)
	@ApiModelProperty(value = "不动产权力人")
	@ChangeLog("不动产权力人")
	private String remainderman;

	/**所属公司*/
	@Excel(name = "所属公司", width = 15)
	@Dict(dicCode = "asset_company")
	@ApiModelProperty(value = "所属公司")
	@ChangeLog("所属公司")
	private String company;

	/**装修信息*/
	@Excel(name = "装修信息", width = 15)
	@ApiModelProperty(value = "装修信息")
	@ChangeLog("装修信息")
	private String renovation;

	/**能源费（元/月/㎡）*/
	@Excel(name = "能源费（元/月/㎡）", width = 15)
	@ApiModelProperty(value = "能源费（元/月/㎡）")
	@ChangeLog("能源费")
	private java.math.BigDecimal energyFee;
	/**车位费（元/月）*/
	@Excel(name = "车位费（元/月）", width = 15)
	@ApiModelProperty(value = "车位费（元/月）")
	@ChangeLog("车位费")
	private java.math.BigDecimal parkingFee;
	/**物业费单价（元/月/㎡）*/
	@Excel(name = "物业费单价（元/月/㎡）", width = 15)
	@ApiModelProperty(value = "物业费单价（元/月/㎡）")
	@ChangeLog("物业费单价")
	private java.math.BigDecimal propertyFeeUnit;

	@Excel(name = "视频监控系统", width = 15)
	@ApiModelProperty(value = "视频监控系统")
	@ChangeLog("视频监控系统")
	private String videoSurveillance;
	@Excel(name = "门禁安防系统", width = 15)
	@ApiModelProperty(value = "门禁安防系统")
	@ChangeLog("门禁安防系统")
	private String accessControl;
	@Excel(name = "核心动转设备", width = 15)
	@ApiModelProperty(value = "核心动转设备")
	@ChangeLog("核心动转设备")
	private String coreOperationEquipment;
	@Excel(name = "网络情况", width = 15)
	@ApiModelProperty(value = "网络情况")
	@ChangeLog("网络情况")
	private String networkCondition;
	@Excel(name = "机房", width = 15)
	@ApiModelProperty(value = "机房")
	@ChangeLog("机房")
	private String machineRoom;
	@Excel(name = "控制室", width = 15)
	@ApiModelProperty(value = "控制室")
	@ChangeLog("控制室")
	private String controlRoom;
	@Excel(name = "设备房", width = 15)
	@ApiModelProperty(value = "设备房")
	@ChangeLog("设备房")
	private String equipmentRoom;
	@Excel(name = "其他资料", width = 15)
	@ApiModelProperty(value = "其他资料")
	@ChangeLog("其他资料")
	private String otherData;
	@Excel(name = "不动产权证", width = 15)
	@ApiModelProperty(value = "不动产权证")
	@ChangeLog("不动产权证")
	private String certEstateRight;
	@Excel(name = "土地使用证", width = 15)
	@ApiModelProperty(value = "土地使用证")
	@ChangeLog("土地使用证")
	private String certLandUse;
	@Excel(name = "建设工程备案证", width = 15)
	@ApiModelProperty(value = "建设工程备案证")
	@ChangeLog("建设工程备案证")
	private String certConstructionRecord;
	@Excel(name = "规划许可证", width = 15)
	@ApiModelProperty(value = "规划许可证")
	@ChangeLog("规划许可证")
	private String certPlanningPermit;
	@Excel(name = "消防验收证", width = 15)
	@ApiModelProperty(value = "消防验收证")
	@ChangeLog("消防验收证")
	private String certFireInspection;
	@Excel(name = "环保验收证", width = 15)
	@ApiModelProperty(value = "环保验收证")
	@ChangeLog("环保验收证")
	private String certEnvironmentalInspection;
	@Excel(name = "平面图纸", width = 15)
	@ApiModelProperty(value = "平面图纸")
	@ChangeLog("平面图纸")
	private String docLayoutDrawing;
	@Excel(name = "CAD图纸", width = 15)
	@ApiModelProperty(value = "CAD图纸")
	@ChangeLog("CAD图纸")
	private String docCadDrawing;
	@Excel(name = "招商资料", width = 15)
	@ApiModelProperty(value = "招商资料")
	@ChangeLog("招商资料")
	private String docInvestment;
	@Excel(name = "其他资料", width = 15)
	@ApiModelProperty(value = "其他资料")
	@ChangeLog("其他资料")
	private String docOther;
	@Excel(name = "国别", width = 15)
	@ApiModelProperty(value = "国别")
	@ChangeLog("国别")
	private String country;
	@Excel(name = "维修合同", width = 15)
	@ApiModelProperty(value = "维修合同")
	@ChangeLog("维修合同")
	private String repairContract;
	@Excel(name = "设备档案/说明", width = 15)
	@ApiModelProperty(value = "设备档案/说明")
	@ChangeLog("设备档案/说明")
	private String docEquipmentFile;
	@Excel(name = "图纸）", width = 15)
	@ApiModelProperty(value = "图纸）")
	@ChangeLog("图纸）")
	private String docDrawing;
	@Excel(name = "权属证件", width = 15)
	@ApiModelProperty(value = "权属证件")
	@ChangeLog("权属证件")
	private String docOwnership;
	@Excel(name = "使用许可证", width = 15)
	@ApiModelProperty(value = "使用许可证")
	@ChangeLog("使用许可证")
	private String docOperationPermit;
	@Excel(name = "检验合格证", width = 15)
	@ApiModelProperty(value = "检验合格证")
	@ChangeLog("检验合格证")
	private String docInspectionCert;
	/**所属资产*/
	@Excel(name = "空间子类", width = 15, dicCode = "belong_asset")
	@Dict(dicCode = "belong_asset")
	@ApiModelProperty(value = "所属资产")
	@ChangeLog("所属资产")
	private java.lang.String belongAsset;

	/**可见状态：1可见 2不可见*/
	private String isVisible;

	@TableField(exist = false)
	List<EquipmentAssetVO> equipmentList;

}
